// services/authService.js

import { anonymousApi } from './api';
import { encryptData } from '../utils/encryption';  // 引入加密工具（加密函数）

const SECRET_KEY = 'mysecretkey12345';  // 密钥，确保它与后端一致

/**
 * 登录用户并进行加密处理
 * @param {Object} credentials - 登录凭证（用户名、密码）
 * @returns {Object} - 登录成功后的响应数据
 */
export const loginUser = async (credentials) => {
    try {
        // 加密密码
        const encryptedPassword = encryptData(credentials.password, SECRET_KEY);
        const encryptedUsername = encryptData(credentials.username, SECRET_KEY);

        // 将加密后的密码替换原来的密码
        const encryptedCredentials = {
            username: encryptedUsername,
            password: encryptedPassword,
        };

        // 记录请求细节，帮助调试
        console.log('发送登录请求到:', anonymousApi.defaults.baseURL + '/api/v2/auth/login');
        console.log('加密凭证:', encryptedCredentials);

        // 发送加密数据到后端 - 尝试使用/api前缀
        const response = await anonymousApi.debouncedRequest({
            method: 'post',
            url: '/v2/auth/login', 
            data: encryptedCredentials,
            handleErrorInternally: false, // 控制错误是否由API内部处理
        });

        console.log('登录响应:', response);
        return response.data;
    } catch (err) {
        // 增强错误处理，记录更多细节
        console.error('登录失败:', err);
        if (err.status === 401) {
            console.error('认证失败 - 可能是用户名或密码错误，或者加密问题');
            throw new Error('用户名或密码错误');
        } else if (err.response) {
            console.error('服务器响应:', err.response);
            throw new Error(err.response.data?.message || `服务器错误: ${err.response.status}`);
        } else {
            throw new Error(err.message || '网络错误，请检查您的网络连接。');
        }
    }
};

/**
 * 注册用户并进行加密处理
 * @param {Object} userData - 注册数据（用户名、密码等）
 */
export const registerUser = async (userData) => {
    try {
        // 清除 confirm 字段，不传给后端
        const { confirm, ...dataToSubmit } = userData;

        // 加密密码
        const encryptedPassword = encryptData(dataToSubmit.password, SECRET_KEY);

        // 将加密后的密码替换原来的密码
        const encryptedUserData = {
            ...dataToSubmit,
            password: encryptedPassword,
        };

        // 记录请求细节，帮助调试
        console.log('发送注册请求到:', anonymousApi.defaults.baseURL + '/api/auth/register');

        // 发送加密数据到后端 - 尝试使用/api前缀
        await anonymousApi.debouncedRequest({
            method: 'post',
            url: '/auth/register', 
            data: encryptedUserData,
            handleErrorInternally: false, // 控制错误是否由API内部处理
        });
    } catch (err) {
        console.error('注册失败:', err);
        if (err.response) {
            console.error('服务器响应:', err.response);
            throw new Error(err.response.data?.message || `服务器错误: ${err.response.status}`);
        } else {
            throw new Error(err.message || '发生未知错误，请稍后再试。');
        }
    }
};
